<?php
//堆排序（以最大堆为例）
function headAdjust(&$array,$s,$e){
  for($i=$s*2;$i<=$e;$i=$i*2){
      if($i<$s&&$array[$i]<$array[$i+1])
           $i++;
      if($array[$s]>=$array[$i])
          break;
      $temp=$array[$s];
      $array[$s]=$array[$i];
      $array[$i]=$temp;
      $s=$i;
  }
}


function HeadSort(&$array){
    for($i=count($array)/2;$i>=1;$i--){
        headAdjust($array,$i,count($array)-1);
    }

    for($i=count($array)-1;$i>1;$i--){
        $temp=$array[1];
        $array[1]=$array[$i];
        $array[$i]=$temp;
        headAdjust($array,1,$i-1);
    }
}

?>